iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

MCU功能介紹與實作系列 第 15

Day 15: 計時器應用實例

  • 分享至 

  • xImage
  •  

精確的時間量測

在嵌入式系統中需要進行精確量測一段程式碼的執行時間或者產生精確的時間延遲。這時候,MCU的計時器就可以派上用場了。

步驟:

  1. 選擇一個計時器通道。
  2. 設定計時器的時脈源和計數器的初始值。
  3. 啟動計時器。
  4. 等待計時器計數到達特定值或觸發計時器中斷。
  5. 在計時器中斷中處理時間結束的操作。

程式碼範例(使用C語言):

#include <avr/io.h>
#include <avr/interrupt.h>

// 定義計時器計數的初始值
#define TIMER_INITIAL_VALUE 0

// 定義計時器計數的目標值
#define TIMER_TARGET_VALUE 10000

// 計時器中斷處理函數
ISR(TIMER0_COMPA_vect) {
    // 在此處理計時器中斷,例如:停止計時、記錄時間、執行特定任務等操作
}

int main(void) {
    // 初始化計時器設置
    TCCR0A |= (1 << WGM01); // 使用CTC模式
    OCR0A = TIMER_TARGET_VALUE; // 設定計數目標值
    TIMSK0 |= (1 << OCIE0A); // 啟用計時器中斷
    sei(); // 啟用全域中斷

    // 啟動計時器,選擇時脈源(這裡使用內部8MHz時鐘)
    TCCR0B |= (1 << CS00) | (1 << CS01); 

    // 主程式
    while (1) {
        // 在此執行其他任務
    }

    return 0;
}

上一篇
Day 14: 計時器的種類和用途
下一篇
Day 16: 中斷基本概念
系列文
MCU功能介紹與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言